#ifndef _MYGRASPGENERATOR_H_
#define _MYGRASPGENERATOR_H_

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
#include <sys/types.h>
#include <sys/stat.h>
#include <string>
#include <unistd.h>
#include "STLWriter.h"
#include "planeFit/PointCloudFilterTable.h"
#include "visgrabTypes.h"

//! Class that can be used by the user to connect the benchmark with his/her grasp-generation method
/*!
 * Three functions getGrasps are included in the class, one for each grasp-representation type.
 */
class MyGraspGenerator {
 public:
  MyGraspGenerator() {};
  ~MyGraspGenerator() {};
  void getGrasps(SceneData* sceneData, std::vector<GraspRepresentationI*> &sceneGrasps);
  void getGrasps(SceneData* sceneData, std::vector<GraspRepresentationII*> &sceneGrasps);
  void getGrasps(SceneData* sceneData, std::vector<GraspRepresentationIII*> &sceneGrasps);
  void changeAngleFingerBaseJoints(double* jNew, double* j, double a);
  void setDefaultMaxTorques(double* maxTau);
  void makeCollisionInfoFile(SceneData* sceneData, SceneInfo* sceneInfo, std::string rootPath);
};

#endif
